package com.pb.infra.taskManage.service;

import com.pb.infra.oth.entity.common.Result;
import com.pb.infra.oth.util.ExecuteScriptUtil;
import com.pb.infra.oth.util.StringUtil;
import com.pb.infra.taskManage.dto.TaskLogDTO;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Service;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@Service
public class TaskLogService {


    @Value("${vm.path}")
    private String vmPath;

    /**
     * 获取文件数据
     *
     * @param dto 查询条件
     * @return 返回数据集合
     */
    public Result fileData(TaskLogDTO dto) {
        String rootPath = "";
        try {
            rootPath = new ClassPathResource("").getURL().getPath();
        } catch (IOException e) {
            e.printStackTrace();
            return Result.ok("获取可执行脚本根路径异常：" + e.getMessage());
        }
        String scriptPath = rootPath + vmPath;
        List<String> endTaskList = new ArrayList<>();
        endTaskList.add("sh");
        endTaskList.add(scriptPath + "getEtlLogDir.sh");

        endTaskList.add(dto.getVmIp());

        //如果文件名为空，展示当前文件夹下所有文件，不为空 展示文件
        if (!StringUtil.isEmpty(dto.getFileName())) {
            endTaskList.add(dto.getFileName());
        }

        List<String> fileData = ExecuteScriptUtil.runJobCmdGet(endTaskList, true);

        return Result.ok(ExecuteScriptUtil.strToFileDirVO(fileData));
    }


    /**
     * 获取文件数据
     *
     * @param dto 查询条件
     * @return 返回数据集合
     */
    public Result fileTextData(TaskLogDTO dto) {
        String rootPath = "";
        try {
            rootPath = new ClassPathResource("").getURL().getPath();
        } catch (IOException e) {
            e.printStackTrace();
            return Result.ok("获取可执行脚本根路径异常：" + e.getMessage());
        }
        String scriptPath = rootPath + vmPath;
        List<String> endTaskList = new ArrayList<>();
        endTaskList.add("sh");

        if (!StringUtil.isEmpty(dto.getFileType()) && dto.getFileType().equals("2")) {
            //查看文件
            endTaskList.add(scriptPath + "getEtlLogText.sh");
        }

        endTaskList.add(dto.getVmIp());

        //如果文件名为空，展示当前文件夹下所有文件，不为空 展示文件
        if (!StringUtil.isEmpty(dto.getFileName())) {
            endTaskList.add(dto.getFileName());
        }

        if (!StringUtil.isEmpty(dto.getFileType()) && dto.getFileType().equals("2")) {
            //查看文件内容
            endTaskList.add(dto.getPageIndex().toString());
        }

        List<String> fileData = ExecuteScriptUtil.runJobCmdGet(endTaskList, false);

        return Result.ok(fileData);
    }

}
